// 文档: https://developers.weixin.qq.com/minigame/dev/guide/
import { _decorator } from 'cc';
import * as cc from 'cc';
import SdkBase from "../SdkBase";
/** wx api接口提示 */
type WX_API = {
    /** 监听用户点击页面内转发按钮（button 组件 open-type="share"）或右上角菜单“转发”按钮的行为，并自定义转发内容
     * - 注意：只有定义了此事件处理函数，右上角菜单才会显示“转发”按钮
     */
    onShareAppMessage: Function,
    /** 监听右上角菜单“分享到朋友圈”按钮的行为，并自定义分享内容
     * - 注意：只有定义了此事件处理函数，右上角菜单才会显示“分享到朋友圈”按钮
     */
    onShareTimeline: Function,
    /** 展示分享菜单 */
    showShareMenu: Function,
    /** 主动分享到好友 */
    shareAppMessage: Function,
    /** 主动分享到朋友圈 */
    shareTimeline: Function,
    /** 后台切前台得回调 - pc端正常，手机失效 */
    onShow: Function,
}
/**
 * 微信小游戏api实现
 * @author 神兽白泽
 * @description 交流群：415468592
 */
export default class WXMiniSdk extends SdkBase {
    /** 微信小游戏api调用工具 */
    private static wx: WX_API = null;
    /**
    * 初始化
    */
    public static init() {
        if (!window["wx"]) return;
        this.wx = window["wx"];
        // 点亮右上角...内的分享菜单
        this.wx.showShareMenu({
            withShareTicket: true,
            menus: ["shareAppMessage", "shareTimeline"]
        })
        // 好友分享
        this.wx.onShareAppMessage((options) => {
            return this.onShareAppMessage(options);
        });
        // 朋友圈分享
        this.wx.onShareTimeline(() => {
            return this.onShareTimeline();
        });
        // 程序回到前台
        this.wx.onShow(() => {
            this.onShow();
        })
    }
    /**
    * 微信朋友圈分享
    */
    public static wxPYQShare(title?: string) {
        console.log("页面内朋友圈分享接口api官方未实现")
        // const share_data = {
        //     title: title ? title : "我能答对一百道，你呢？"
        // }
        // this.wx.shareTimeline(() => {
        //     return share_data;
        // });
    }
    /**
    * 微信好友分享
    */
    public static weChatShare(title?: string) {
        if (!this.wx) return;
        const share_data = { title: title ? title : "我能答对一百道，你呢？" }
        this.wx.shareAppMessage(() => {
            return share_data;
        });
    }
    /**
    * 手机震动
    */
    public static vibrate(time: number = 0.5) {
        /** @ts-ignore */
        jsb.Device.vibrate(time);//单位秒
    }
    /**
    * 设置分享的内容
    * @returns
    */
    private static onShareTimeline() {
        return {
            title: '我能答对一百道，你呢？',
            // // query: {
            // //     key: 666
            // // },
            // // imageUrl: ''
        }
    }
    /**
    * 朋友圈分享回调
    * @returns
    */
    private static onShareAppMessage(options) {
        // 设置菜单中的转发按钮触发转发事件时的转发内容
        let shareObj = {
            title: "我能答对一百道，你呢？",        // 默认是小程序的名称(可以写slogan等)
            // path: '/pages/share/share',        // 默认是当前页面，必须是以‘/’开头的完整路径
            imageUrl: '',     //自定义图片路径，可以是本地文件路径、代码包文件路径或者网络图片路径，支持PNG及JPG，不传入 imageUrl 则使用默认截图。显示图片长宽比是 5:4
            success: (res) => {
                // 转发成功之后的回调
                if (res.errMsg == 'shareAppMessage:ok') {
                }
                console.log("转发流程结束1")
            },
            fail: (res) => {
                // 转发失败之后的回调
                if (res.errMsg == 'shareAppMessage:fail cancel') {
                    // 用户取消转发
                } else if (res.errMsg == 'shareAppMessage:fail') {
                    // 转发失败，其中 detail message 为详细失败信息
                }
                console.log("转发流程结束0")
            },
            complete: () => {
                // 转发结束之后的回调（转发成不成功都会执行）
                console.log("转发流程结束")
            }
        };
        // 来自页面内的按钮的转发
        if (options.from == 'button') {
            let eData = options.target.dataset;
            console.log(eData.name);     // shareBtn
            // 此处可以修改 shareObj 中的内容
            // shareObj.path = '/pages/btnname/btnname?btn_name=' + eData.name;
        }
        // // 返回shareObj
        return shareObj;
    }
    /**
    * 游戏回到前台
    */
    private static onShow() {
        console.log("程序回到前台。。。。。。。。。。。。。。")
    }
}